package com.cty.servlet;

import com.cty.service.LoginService;
import com.cty.pojo.User;
import com.cty.service.impl.LoginServiceImpl;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;

/**
 * @Auther: cty
 * @Date: 2020/2/11 15:53
 * @Description: 登录
 *
 * @version: 1.0
 */
@WebServlet(name = "LoginServlet")
public class LoginServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        //设置请求编码格式:
        req.setCharacterEncoding("utf-8");
        //设置响应编码格式
        resp.setContentType("text/html;charset=utf-8");
        //获取请求信息
        String uname=req.getParameter("uname");
        //uname=new String(uname.getBytes("iso8859-1"),"utf-8");//使用String进行数据重新编码
        String pwd=req.getParameter("pwd");
        System.out.println(uname+":"+pwd);
        //处理请求信息
        //获取业务层对象
        LoginService ls=new LoginServiceImpl();
        User u=ls.checkLoginService(uname, pwd);
        System.out.println(u);
        //响应处理结果
        if(u!=null){
            //创建Cookie信息实现三天免登录。
            Cookie c=new Cookie("uid", u.getUid()+"");
            //设置Cookie的有效期
            c.setMaxAge(3*24*3600);
            c.setPath("/mylogin");
            //添加Cookie信息
            resp.addCookie(c);
            //将数据存储到session对象中
            HttpSession hs=req.getSession();
            hs.setAttribute("user",u);
            //创建网页计数器
            //获取计数数据
            ServletContext sc=this.getServletContext();
            if(sc.getAttribute("nums")!=null){
                int nums=Integer.parseInt((String) sc.getAttribute("nums"));
                //计数器自增
                nums+=1;
                //再次存储到ServletContext对象中
                sc.setAttribute("nums", nums+"");
            }else{
                sc.setAttribute("nums", 1+"");
            }
            //请求转发
            //req.getRequestDispatcher("main").forward(req, resp);
            //重定向
            resp.sendRedirect("/mylogin/main");
            return;
        }else {
            //使用request对象实现不同Servlet的数据流转
            req.setAttribute("str", "用户名或密码错误");
            //使用请求转发
            req.getRequestDispatcher("page").forward(req, resp);
            return;
        }
    }
}
